package main

// 方法三
func groupAnagramsV3(strs []string) [][]string {
	// 属于同一个字符集的，需要聚合到一起 => 需要根据聚合标准去聚合; 聚合标准 -> 根相同(字母数)
	m := make(map[[26]int][]string)
	for _, str := range strs {
		// 求字符的字母计数
		strCharCount := getStrCharCountV3(str)

		if _, ok := m[strCharCount]; ok {
			m[strCharCount] = append(m[strCharCount], str)
		} else {
			m[strCharCount] = []string{str}
		}
	}

	// 遍历输出
	res := make([][]string, 0)
	for _, v := range m {
		res = append(res, v)
	}
	return res
}

func getStrCharCountV3(str string) [26]int {
	countArr := [26]int{} // [0,1,0,1,5]
	chars := []rune(str)
	for _, chr := range chars {
		countArr[int(chr)-int('a')]++
	}
	return countArr
}
